#pragma once


#define Handler_FromGameServer_DECL( p )			static VOID On##p( ServerSession * pServerSession, MSG_BASE * pMsg, WORD wSize )
#define Handler_FromGameServer_IMPL( p )			VOID Handler_FromGameServer::On##p( ServerSession * pServerSession, MSG_BASE * pMsg, WORD wSize )


class ServerSession;
class Handler_FromGameServer
{
public:
	Handler_FromGameServer(void);
	~Handler_FromGameServer(void);

	static VOID OnSERVERCOMMON_HEARTBEAT( ServerSession * pServerSession, MSG_BASE * pMsg, WORD wSize );
	static VOID OnAG_CONNECTION_UNREGISTER_CMD( ServerSession * pServerSession, MSG_BASE * pMsg, WORD wSize );

	Handler_FromGameServer_DECL( AG_SYNC_PLAYER_ENTER_ACK );
	Handler_FromGameServer_DECL( AG_SYNC_PLAYER_ENTER_NAK );

	Handler_FromGameServer_DECL( AG_SYNC_PLAYER_WARP_ACK );
	Handler_FromGameServer_DECL( AG_SYNC_PLAYER_WARP_NAK );

	//Handler_FromGameServer_DECL( AG_CONNECTION_UNREGISTER_ACK );
	//Handler_FromGameServer_DECL( AG_CONNECTION_UNREGISTER_NAK );

	Handler_FromGameServer_DECL( AG_PARTY_FIELD_AGENT_INVITE_RESPONSE_NAK );
	Handler_FromGameServer_DECL( AG_PARTY_BATTLE_AGENT_JOINROOM_CMD );
	Handler_FromGameServer_DECL( AG_PARTY_BATTLE_AGENT_INVITE_REQUEST_SYN );
	Handler_FromGameServer_DECL( AG_PARTY_BATTLE_AGENT_CHANGE_MASTER_CMD );

	Handler_FromGameServer_DECL( AG_ZONE_ROOM_JOIN_ACK );
	Handler_FromGameServer_DECL( AG_ZONE_ROOM_JOIN_NAK );

	Handler_FromGameServer_DECL( AG_ZONE_ROOM_LEAVE_ACK );
	Handler_FromGameServer_DECL( AG_ZONE_ROOM_LEAVE_NAK );

	Handler_FromGameServer_DECL( AG_ZONE_VILLAGE_MOVE_NAK );
	Handler_FromGameServer_DECL( AG_ZONE_VILLAGE_MOVE_ACK );

	Handler_FromGameServer_DECL( AG_ZONE_MISSION_LEAVE_CMD );
	Handler_FromGameServer_DECL( AG_STATUS_LEVEL_UP_CMD );

	Handler_FromGameServer_DECL( AG_GUILD_CREATE_ACK );
	Handler_FromGameServer_DECL( AG_GUILD_DESTROY_ACK );

	Handler_FromGameServer_DECL( AG_GUILD_JOIN_SUCCESS_CMD );
	Handler_FromGameServer_DECL( AG_GUILD_WITHDRAW_ACK );

};











